<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // then返回的新的promise状态及结果值由什么决定？
        // 答：由then()指定的回调函数执行的结果决定

        let p = Promise.resolve('ok');

        // 1. 抛出异常
        // 返回promise 状态：rejected，结果值：抛出的异常信息
        // 失败的promise，结果值：失败的抛出信息
        // let p2 = p.then(val=>{
        //     throw 'error';
        // });
      
        // console.log(p2); //状态失败，结果值：error

        // 2. 返回非promise对象
        // 默认：返回成功状态，结果值undefined
        // 返回promise状态：fulfilled，结果值：返回值
        // 成功的promise，结果值：参数
        // let p2 = p.then(val=>{
        //     // console.log(val);
        //     return [1,2,3];
        // },rea=>{

        // });
        // // 绝对是个promise！ 
        // console.log(p2); // 状态成功，结果值 ：数组[1,2,3]

        // 3. 返回promise对象
        // 返回promise状态：根据返回的promise决定，结果值：返回的promise结果值
        // 返回的promise如果是成功，then的返回promise就是成功，结果值就是返回的promise的结果值
        // 返回的promise如果是失败，then的返回promise就是失败的，结果值就是返回的promise失败结果值
        
        // fulfilled状态
        // let p2 = p.then(val=>{
        //     return new Promise((resolve,reject)=>{
        //         resolve('ok');
        //     });
        // });

        // rejected状态
        // let p2 = p.then(val=>{
        //     return new Promise((resolve,reject)=>{
        //         reject('error');
        //     });
        // });

        // pending状态
        // let p2 = p.then(val=>{
        //     return new Promise((resolve,reject)=>{
        //     });
        // });

        // console.log(p2);
            
    </script>
</body>

</html>